{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "875ce9a2-203c-4b5d-8f58-3236d786fd28",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.feature_extraction import DictVectorizer\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.tree import DecisionTreeClassifier, export_graphviz\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "096aa479-f151-4be5-a866-bfc071f382c8",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 1、获取数据\n",
    "train = pd.read_csv(\"train.csv\")\n",
    "test = pd.read_csv(\"test.csv\")\n",
    "datas = pd.concat([train,test])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "7abe5074-6e02-4dd6-adcb-5f73543cef68",
   "metadata": {},
   "outputs": [],
   "source": [
    "y = train[\"Survived\"]\n",
    "features = [\"Pclass\", \"Sex\", \"SibSp\", \"Parch\"]\n",
    "X = pd.get_dummies(train[features])\n",
    "X_test = pd.get_dummies(test[features])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "39c768df-9dde-4fc4-9745-2631b2851032",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "9afef447-c3e1-4afc-8f19-c406f0df58df",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8159371492704826"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 模型初步训练 \n",
    "from xgboost import XGBClassifier \n",
    "xg = XGBClassifier() \n",
    "\n",
    "xg.fit(X, y) \n",
    "xg.score(X, y)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "d3b76a2a-cf2c-4902-bbc1-b852e8f9ae86",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0,\n",
       "       1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1,\n",
       "       1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1,\n",
       "       1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1,\n",
       "       1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1,\n",
       "       0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1,\n",
       "       1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1,\n",
       "       0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0,\n",
       "       1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,\n",
       "       0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,\n",
       "       0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,\n",
       "       0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,\n",
       "       1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0,\n",
       "       0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0,\n",
       "       1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1,\n",
       "       0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0])"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "testpre= xg.predict(X_test)\n",
    "testpre"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "4f28453e-e654-48b0-a01b-f4cea75e8fb2",
   "metadata": {},
   "outputs": [],
   "source": [
    "output = pd.DataFrame({'PassengerId': test.PassengerId, 'Survived': testpre})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "8ba3abc8-78be-466f-8125-0971fe6f258c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Your submission was successfully saved!\n"
     ]
    }
   ],
   "source": [
    "output.to_csv('submissionxgboost.csv', index=False)\n",
    "print(\"Your submission was successfully saved!\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7487d9eb-3d9f-491e-a65f-cd91fe0cb590",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1946adba-ae80-4c39-99c5-6bf7c89bc381",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4ffdbdf1-2c36-4317-aa7a-b16ef5c2c02d",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1eae33e5-6173-4164-9fc6-10f7a3fd5392",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c109ba68-ec9e-430a-860f-8d8ad6abf134",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c2321ec7-45ec-46e6-9f99-10bedee8945a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "727da17b-e159-44c7-b6aa-4a49e8a9795a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "dc15e550-e6bf-40c4-a462-8b643a76c3a7",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "ff69b5e6-0030-40da-8ed2-5a3bb4638ecb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7892376681614349"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# # 模型初步训练 \n",
    "# from xgboost import XGBClassifier \n",
    "# xg = XGBClassifier() \n",
    "\n",
    "# xg.fit(x_train, y_train) \n",
    "# xg.score(x_test, y_test)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "f7ed0416-a54e-48e5-8983-4de0cb50e770",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.7847533632286996\n",
      "0.757847533632287\n",
      "0.7802690582959642\n",
      "0.8071748878923767\n",
      "0.7802690582959642\n",
      "0.7802690582959642\n",
      "0.7847533632286996\n",
      "0.7802690582959642\n",
      "0.7713004484304933\n",
      "0.7713004484304933\n"
     ]
    }
   ],
   "source": [
    "# 针对max_depth进⾏模型调优 \n",
    "depth_range = range(10) \n",
    "score = [] \n",
    "for i in depth_range: \n",
    "\txg = XGBClassifier(eta=1, gamma=0, max_depth=i) \n",
    "\txg.fit(x_train, y_train) \n",
    "\ts = xg.score(x_test, y_test) \n",
    "\tprint(s) \n",
    "\tscore.append(s)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "4f87016f-2f7e-41f8-aaba-7b9c710f89ec",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGdCAYAAAAxCSikAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJxElEQVR4nO3de3zT9b0/8FeSNkmv6f1CKaUFCoUCQhGktNUpVkGduE3RTVAHO8Ph5OJ2JgO382MqczswmAqKwpy3iUecuq2o9UbLXcpF7qUttKW0lN6SXtMm+f7+SL6B0haakuT7TfJ6Ph55nEP4Nn1nRfLi83l/3l+FIAgCiIiIiGRMKXUBRERERNfCwEJERESyx8BCREREssfAQkRERLLHwEJERESyx8BCREREssfAQkRERLLHwEJERESy5yd1Ac5isVhw/vx5hISEQKFQSF0OERER9YMgCGhubsagQYOgVPa9juI1geX8+fNITEyUugwiIiIagMrKSgwePLjP3/eawBISEgLA+oZDQ0MlroaIiIj6w2AwIDEx0f453hevCSziNlBoaCgDCxERkYe5VjsHm26JiIhI9hhYiIiISPYYWIiIiEj2GFiIiIhI9hhYiIiISPYYWIiIiEj2GFiIiIhI9hhYiIiISPYYWIiIiEj2GFiIiIhI9hhYiIiISPYYWIiIiEj2GFiIJNDWacIr20tRa+iQuhQiIo/AwEIkgVe2l+GP207iubwTUpdCROQRGFiIJLD9VC0AoKD4IiwWQeJqiIjkj4GFyM0aWzvxXZXe+v+3deHYeYPEFRERyR8DC5Gb7Sytg3DZokrB6YvSFUNE5CEYWIjcrLC4DgAQGaS2/pqBhYjomhhYiNxIEAR7QFk0fQQAoKi8Ea1Gk5RlERHJHgMLkRuVXmzFeX0H1H5K3J+RiMSIAHSZBew9Uy91aUREssbAQuRG4urK5KERCFCrkD0iGgBQYNsmIiKi3jGwELlR4WlrMMkeEQUAyLH9X/axEBFdHQMLkZsYTWbsLrVu/YgrK1OHRUGpsG4VVTW1S1keEZGsMbAQucmB8ia0d5kRFazBqLgQAIAuwB83JIYBAHZwlYWIqE8MLERuIm77ZI+IglKpsD9v72M5zT4WIqK+MLAQucmV/SuinFTrr3eW1MHMMf1ERL1iYCFyg/oWI46et47jzxrePbCMHxyGEI0fmtq6cNQ2sp+IiLpjYCFyg52l9RAEYFRcCGJCtd1+z0+lRObwSAA8LURE1BcGFiI3KCy2BpGc1Ohef599LEREV8fAQuRi1nH8vfeviHJsgeVAeSNaOKafiKgHBhYiFyupbUGNoQMaPyVuHBrR6zVDIgORFBkIk0XAnlKO6SciuhIDC5GLids8k5MjoPVX9XldNqfeEhH1iYGFyMXEACJu+/RF7GMpZB8LEVEPDCxELmQ0mbGnzDaOP7X3/hXR1GGRUCkVKKtrRWVDmzvKIyLyGAwsRC5UdLYRHV0WRIdoMDI25KrXhmr9MUEc01/CVRYiossxsBC5UMFlp4MUCsU1rr58W4h9LEREl2NgIXKh/vaviMRtox2nOaafiOhyDCxELlLXYsSx8wYAwLThV+9fEY1L0CFU6wdDhwnfnWtyYXVERJ6FgYXIRXba+lBGx4ciOkTTr6/xUynt4YanhYiILmFgIXKRgmJb/8o1TgddiX0sREQ9MbAQuYB1HL9j/SsicYDcgYomNHd0Ob02IiJPxMBC5ALFF1pQ22yE1l+JjKRwh742MSIQyVFBMFsE7OaYfiIiAAwsRC4hrq5MSY686jj+vlwa088+FiIigIGFyCUKrnF35mthHwsRUXcMLERO1tFlxl7bOP6cVMf6V0Q3pUTAT6nA2fo2VNRzTD8REQMLkZPtP9sIo8mC2FANRsQED+g1QrT+mDjE2vtSWMJVFiIiBhYiJxO3cbJHRPdrHH9f7H0sxexjISJiYCFysuvtXxFl27aTdpbWwWS2XHddRESejIGFyIlqmztwoto6jj+rn+P4+zI2QQddgD+aO0w4fE7vjPKIiDwWAwuRE4nj+NMTQhEZ3L9x/H1RKRX20MPTQkTk6xhYiJxI7DfJdnC6bV84j4WIyIqBhchJBEFwWv+KKMv2Oocqm6Bv55h+IvJdDCxETnKyphl1LUYE+KscHsffl8HhgUiJ5ph+IiIGFiInEftMbkqJgMbP8XH8fcnh1FsiIgYWImcpPO3c/hUR+1iIiBhYiJyio8uMvWcaAAA5qc7pXxHdlBIJf5UCFQ1tKK9vdeprExF5CgYWIifYd6YBnSYL4nVaDIse2Dj+vgRp/Oxj+gu4ykJEPoqBhcgJLo3jj7qucfx9EW+iWFjMPhYi8k0DCizr169HcnIytFotMjIyUFhYeNXr33nnHYwfPx6BgYGIj4/HY489hvr67icetm7ditGjR0Oj0WD06NH45z//OZDSiCThqv4VkdjHsru0Hl0c009EPsjhwLJlyxYsXrwYy5cvx8GDB5GdnY0ZM2agoqKi1+t37NiBuXPnYt68eTh27Bj+7//+D99++y3mz59vv2b37t2YPXs25syZg8OHD2POnDl44IEHsHfv3oG/MyI3qTV04GRNMxQKYNp1juPvy5hBOoQH+qPZaMLhyiaXfA8iIjlzOLCsWbMG8+bNw/z585GWloa1a9ciMTERGzZs6PX6PXv2YOjQoXjyySeRnJyMrKws/PznP8f+/fvt16xduxa33347li1bhlGjRmHZsmW47bbbsHbt2gG/MSJ32WEbxz82QYeIILVLvodKqbCHIfaxEJEvciiwdHZ2oqioCLm5ud2ez83Nxa5du3r9mszMTJw7dw55eXkQBAEXLlzABx98gLvuust+ze7du3u85h133NHnawKA0WiEwWDo9iCSQqGTp9v2hfNYiMiXORRY6urqYDabERsb2+352NhY1NTU9Po1mZmZeOeddzB79myo1WrExcUhLCwML774ov2ampoah14TAFatWgWdTmd/JCYmOvJWiJzCYhFc3r8iEsf0H65sgr6NY/qJyLcMqOn2ylMQgiD0eTLi+PHjePLJJ/G73/0ORUVF+PTTT3HmzBksWLBgwK8JAMuWLYNer7c/KisrB/JWiK6LOI4/UK2yHz12lUFhARgeEwyLAOwq5bYQEfkWP0cujoqKgkql6rHyUVtb22OFRLRq1SpMmzYNv/71rwEA48aNQ1BQELKzs/Hss88iPj4ecXFxDr0mAGg0Gmg0GkfKJ3I6cXtmakok1H6unxKQPSIKJbUtKDhdhxlj413+/YiI5MKhv2HVajUyMjKQn5/f7fn8/HxkZmb2+jVtbW1QKrt/G5XKep8VQRAAAFOnTu3xmp9//nmfr0kkF+J2UJaL+1dEYh9LQfFF+38/RES+wKEVFgBYunQp5syZg0mTJmHq1KnYuHEjKioq7Fs8y5YtQ1VVFd58800AwD333IOf/exn2LBhA+644w5UV1dj8eLFmDx5MgYNGgQAWLRoEXJycvDCCy/g3nvvxccff4wvvvgCO3bscOJbJXKu9k4z9p21juN3df+KaEpKBPxVClQ1teNsfRuSo4Lc8n2JiKTmcGCZPXs26uvrsXLlSlRXVyM9PR15eXlISkoCAFRXV3ebyfLoo4+iubkZL730Ep566imEhYXh1ltvxQsvvGC/JjMzE++99x5WrFiBZ555BsOGDcOWLVswZcoUJ7xFItfYd9Y6jn+QToth0e4JDoFqP0xKisDusnoUnr7IwEJEPkMheMm6ssFggE6ng16vR2hoqNTlkA949t/H8fqOM5g9KREv/Gic277v+m9K8KdPT2F6Wixef2SS274vEZEr9Pfzm/cSIhog+3FmJ9+d+VrEPpbdpXUc009EPoOBhWgALhg6cOqCbRz/MPcGltHxoYgIUqO104yDFU1u/d5ERFJhYCEaAHF1ZVyCDuEuGsffF6VSgSzbmH5OvSUiX8HAQjQAYlBw1+mgK4m3AeB9hYjIVzCwEDnIYhGww033D+qLGJS+O9eEprZOSWogInInBhYiBx2vNqC+tRNBahUmuHgcf1/idFqkxgZDEICdJfWS1EBE5E4MLEQOEvtXpg5zzzj+vmTz7s1E5EMYWIgcJHX/ikjcjio8Xccx/UTk9RhYiBzQ1mnC/rONAKTrXxFNSY6EWqVEVVM7ztS1SloLEZGrMbAQOWDvmQZ0mi1ICAuQfCx+gFqFG5OtPTSFPC1ERF6OgYXIAYXF1mCQkxoFhUIhcTXsYyEi38HAQuQAufSviMRtqd2l9eg0cUw/EXkvBhaifqrWt+N0bQuUCiBzWKTU5QAA0uJCERUsjulvlLocIiKXYWAh6if7OP7BYQgLdO84/r4olQpMG37ptBARkbdiYCHqJzEQ5Eh8OuhK7GMhIl/AwELUD9Zx/Lb+lVR59K+IxD6W76r0aGzlmH4i8k4MLET9cOy8AY1tXQjW+OGGxDCpy+kmNlSLkbEh1jH9pdwWIiLvxMBC1A8FttWVqcMi4a+S33829qm3xQwsROSd5Pc3L5EMif0hcutfEYnbVIWnL3JMPxF5JQYWomtoNZpQVC6O45dX/4po8tAIqP2UOK/vQOlFjuknIu/DwEJ0DXvP1KPLLCAxIgBJkYFSl9OrALUKk4dGAOBpISLyTgwsRNdQYOsLyR4RLYtx/H25/O7NRETehoGF6Brk3r8iErerdpfWw2gyS1wNEZFzMbAQXUVVUztKL7ZCqQCmDpN3YBkVF4KoYA3au8w4UN4kdTlERE7FwEJ0FeKwuBsSw6AL8Je4mqtTKhWXbQuxj4WIvAsDC9FVFJy+1L/iCdjHQkTeioGFqA9mi4CdJbb7B6XKeztIlGW7EeLR83rUtxglroaIyHkYWIj6cLRKj6a2LoRo/DB+cJjU5fRLTKgWo+LEMf31UpdDROQ0DCxEfRD7QDKHR8JPhuP4+5IjTr0tZh8LEXkPz/lbmMjNPK1/RXR5HwvH9BORt2BgIepFi9GEA7Zx/DkeFlhuHBoBjZ8SNYYOlNS2SF0OEZFTMLAQ9WJPaT1MFgFJkYEYItNx/H3R+qswOdk6pr+Ap4WIyEswsBD1QuxfyZb5dNu+iKtCnMdCRN6CgYWoF4Ue2r8iyrYdw95TxjH9ROQdGFiIrlDZ0IayulaolApMHRYpdTkDMjI2BNEhGnR0WVB0tlHqcoiIrhsDC9EVdtiGxU1IDEOoVt7j+PuiUFwa088+FiLyBgwsRFe41L/imdtBIvaxEJE3YWAhuozZImCH2L/iIeP4+zLNNqb/2HkD6jimn4g8HAML0WW+O9cEQ4cJoVo/jEvQSV3OdYkO0WB0fCgA2O+JRETkqRhYiC4jng6aNjzKo8bx90VcJSooZmAhIs/m+X8jEzmRt/SviC7vY+GYfiLyZAwsRDbNHV04UNEEwHMHxl0pIykcWn8lapuNKL7AMf1E5LkYWIhsdpfWw2wRkBwVhMQIzxrH3xetvwpTkq2zZHhaiIg8GQMLkc2l6bbesboi4jwWIvIGDCxENt7WvyLKSbW+n71l9ejo4ph+IvJMDCxEsI7jP1vfBj+lAjelREhdjlONiAlGbKgGRpMF+zmmn4g8FAMLES5tB00cEo4QDx3H3xfrmH5OvSUiz8bAQoRLH+RZXta/ImIfCxF5OgYW8nkms8U+CdbbGm5FWbYx/SeqDaht7pC4GiIixzGwkM/7rkp/aRz/4DCpy3GJyGAN0hM4pp+IPBcDC/m8QtvY+qwRUVApFRJX4zr2PhaO6SciD8TAQj7PW48zX+nyPhaO6SciT8PAQj7N0NGFg5VNAC71eXirjKRwBPirUNdixMmaZqnLISJyCAML+TRxHH+KF43j74vGT2WfMcPjzUTkaRhYyKdd2g7y7tUV0aV5LOxjISLPwsBCPu3S/YO8u39FlJNqDWZ7zzRwTD8ReRQGFvJZ5fWtKBfH8Q+LlLoctxgWHYx4nRadJgv2nWmQuhwion4bUGBZv349kpOTodVqkZGRgcLCwj6vffTRR6FQKHo8xowZY7+mq6sLK1euxLBhw6DVajF+/Hh8+umnAymNqN/s4/iTwhGs8ZO4Gvewjum3rrKwj4WIPInDgWXLli1YvHgxli9fjoMHDyI7OxszZsxARUVFr9evW7cO1dXV9kdlZSUiIiJw//33269ZsWIFXn31Vbz44os4fvw4FixYgPvuuw8HDx4c+DsjugbxAzvHR/pXROxjISJP5HBgWbNmDebNm4f58+cjLS0Na9euRWJiIjZs2NDr9TqdDnFxcfbH/v370djYiMcee8x+zVtvvYXf/va3mDlzJlJSUvD444/jjjvuwOrVqwf+zoiuwmS2YFdJPQDf6V8RTRseBYUCOFnTjFoDx/QTkWdwKLB0dnaiqKgIubm53Z7Pzc3Frl27+vUamzZtwvTp05GUlGR/zmg0QqvVdrsuICAAO3bs6PN1jEYjDAZDtwdRfx0+14Rmowlhgf5IT9BJXY5bRQSpMdb2nrnKQkSewqHAUldXB7PZjNjY2G7Px8bGoqam5ppfX11djW3btmH+/Pndnr/jjjuwZs0anD59GhaLBfn5+fj4449RXV3d52utWrUKOp3O/khMTHTkrZCPK7CNp5823LvH8feFfSxE5GkG1HSrUHT/C14QhB7P9eaNN95AWFgYZs2a1e35devWYcSIERg1ahTUajWeeOIJPPbYY1CpVH2+1rJly6DX6+2PysrKgbwV8lG+2r8iErfBdpTUwWLhmH4ikj+HAktUVBRUKlWP1ZTa2toeqy5XEgQBmzdvxpw5c6BWq7v9XnR0ND766CO0traivLwcJ0+eRHBwMJKTk/t8PY1Gg9DQ0G4Pov7Qt3fhkDiO38f6V0QTh4QjUK1CXUsnTtRwO5WI5M+hwKJWq5GRkYH8/Pxuz+fn5yMzM/OqX7t9+3aUlJRg3rx5fV6j1WqRkJAAk8mErVu34t5773WkPKJ+2V1aB4sADIsOQkJYgNTlSELtp8TUFOvsGfaxEJEncHhLaOnSpXj99dexefNmnDhxAkuWLEFFRQUWLFgAwLpVM3fu3B5ft2nTJkyZMgXp6ek9fm/v3r348MMPUVZWhsLCQtx5552wWCz47//+7wG8JaKrK/Cx6bZ9YR8LEXkSh6dlzZ49G/X19Vi5ciWqq6uRnp6OvLw8+6mf6urqHjNZ9Ho9tm7dinXr1vX6mh0dHVixYgXKysoQHByMmTNn4q233kJYWJjj74joKgRBQEGxrX8l1Tf7V0TZqdbA9u2ZRrR3mhGg7rtnjIhIagpBELyi485gMECn00Gv17Ofhfp0tq4Vt/zvN/BXKXDod7kI8pEJt70RBAFZL3yNqqZ2vPHYjbhlZIzUJRGRD+rv5zfvJUQ+Rdz+yEgK9+mwAlw5pp99LEQkbwws5FPYv9LdpTH97GMhInljYCGf0WW2YHepdRx/DgMLAGDa8EgoFEDxhRbU6Dmmn4jki4GFfMahyia0GE0ID/THmEHscwKAsEA1xg0OA8BVFiKSNwYW8hmFttNBWSOiofTBcfx9yWEfCxF5AAYW8hmX+ld8+zjzlTimn4g8AQML+YSmtk58d64JAAPLlSYMCUOQWoWG1k4cr+aYfiKSJwYW8gm7SuthEYARMcGI1/nmOP6++KuUmDrMGuIK2MdCRDLFwEI+QWwo5XHm3olTfwuL2cdCRPLEwEJezzqO39a/4uPj+PsiBrn95Q1o6zRJXA0RUU8MLOT1ztS1oqqpHWqVElOSI6QuR5aGRgZicHgAuswC9pY1SF0OEVEPDCzk9cTjupOGhiNQ7dvj+PtiHdNvXWVhHwsRyREDC3k99q/0D+exEJGcMbCQV+s0XRrHz+PMV5c5LApKBVBS24LzTe1Sl0NE1A0DC3m1gxWNaO00IzJIjdHxHMd/NbpAf4xPDAMA7OAqCxHJDAMLeTVxeyNrRBTH8fdD9nDOYyEieWJgIa/G/hXHZKdeGtNv5ph+IpIRBhbyWo2tnfiuSg+A/Sv9dUNiGII1fmhq68Kx83qpyyEismNgIa+1s7QOggCMjA1BbKhW6nI8gnVMfyQAnhYiInlhYCGvJY6Z5+qKY8TjzQXF7GMhIvlgYCGvJAjCpf6VVPavOELs9zlQ0YhWI8f0E5E8MLCQVyq92Irz+g6o/ZSYPJTj+B2RFBmIxAjbmP4z9VKXQ0QEgIGFvJS4ujJ5aAQC1CqJq/Es3cb08+7NRCQTDCzklcSGUfavDMylMf3sYyEieWBgIa9jNJkvG8fP/pWBmGob01960XqnayIiqTGwkNc5UN6E9i4zooI1GBUXInU5HkkX4I8b7GP6ucpCRNJjYCGvc2m6LcfxXw97HwvnsRCRDDCw9IPZIkAQOKbcU7B/xTlyUq3/++3kmH4ikgEGlqsQBAFLthzCxD/ko6yuVepyqB/qW4w4ahspnzWcgeV6jB8chhDbmP6jVRzT7wmOVunx6N/24emt3+Fis1HqcoicioHlKhQKBWqbO6Bv70Ihp356hJ2l9RAEYFRcCGI4jv+6+KmUyBwujunnn385M3R04X8+OYbvv7QD35y6iPe+rcStq7/BW7vPcnWMvAYDyzWI+/i8r4pnEINlDqfbOgX7WORNEAR8fKgKt63ejjd2nYVFAO4aG4+xCTo0d5jwzMfHcN/6nfjuXJPUpRJdNz+pC5C77BFR+OM2YHdZPTpNFqj9mPHkyjqO3/rByu0g58gRx/SXN6LFaEKwhn9lyEVJbQt+9/FR7LId4U+JCsLKe9ORNSIKZouAd/eW40+fncJ35/S49+WdeHhKEn6VOxK6QH+JKycaGH76XkNaXCiigtVo6zTjQEWj1OXQVZTUtqDGYBvHn8xx/M4wJDIQSZGBMFkE7CnlmH45aO8048+fncSMdQXYVVoPjZ8Sv8pNxbbF2ciyNZqrlArMmToUXz11C+6bkABBAN7aU47b1nyDDw+c4yEC8kgMLNegVCrs/1rnPr68idsWU5IjoPXnOH5nyebUW9n44vgFTF+zHS9/XYous4BbR8Xgi6U344lbR0Dj1/PPfHSIBn+ZfQP+8bObMDwmGHUtnVj6/mHM3rgHxReaJXgHRAPHwNIP7GPxDJfPXyHn4Z9/6VU2tGH+3/dj/pv7UdXUjoSwAGyck4FNj0xCYkTgNb9+6rBI5D2Zjd/cOQoB/irsO9OAmesKsWrbCd6RmzwGA0s/iB+AR6r0aGjtlLga6o3RZMbesgYAHMfvbFOHRUKlVKCsrhWVDW1Sl+NTOk0WvPx1CW7/y3Z8ceIC/JQKPH7LMOQvzUHumDgoFP0fjKj2U1762tGxMFkEvLq9DLev2Y5Pj9Zwm4hkj4GlH2JCtRgVFwJBsA7RIvkpKm/kOH4XCdX6Y4I4pp9//t1mV0kdZqwrwJ8/O4WOLgtuSonAtkXWVZJA9cCbnweHB2Lj3EnY9MgkDA4PwHl9Bxa8XYSfvvEtKuoZSEm+GFj6ifv48iZuV+SMiHLoX53UP5e2hfjn39VqDR1Y9N5B/Pj1vSi92IqoYDX+Mns8/vGzmzAi1nlh/La0WOQvuRm/vHU4/FUKfH3qIm7/y3b89cvTMJrMTvs+RM7CwNJPl+/jc+lUfuz9K6nsX3EF8X/XHac5pt9VTGYL3th5Bret3o6PD52HQgHMnZqEL5+6BfdNGOySIB6gVuGp3JH4dHEOpg2PhNFkwZr8Yty5tpDhlGSHgaWfJidHQO2nRLW+A6UXW6Quhy5T32LE0SoDAGAa56+4xLgEHUK1fjB0mDiEzAUOVjTi3pd34n/+dRzNRhPGD9bhk4VZWHlvOnQBrp+bMiw6GG/Pm4IXH5qAmBANztS1Ys6mfVj47gHU6Dtc/v2J+oOBpZ+0/ipMsc32KCjmPr6ciH0VafGhiAnhOH5X8FMp7WGQp4Wcp6mtE8s+PIIfbNiFY+cNCNX64dlZ6fjwF9MwdrDOrbUoFArcM34QvnzqZvx0WjKUCuA/31XjttXf4PXCMpjMFrfWQ3QlBhYHsI9Fni7vXyHXYR+L81gsAt7fX4lbV2/HP/ZVQBCAH04cjK9+dQsevikJKqV0fVghWn/87p7R+NcvszBxSBhaO8149j8ncPeLO7D/bINkdRFxzrYDrH9hn8SesgYYTeZeBzWRe1nH8YvzV3ic2ZXEwH6gognNHV0I0XLE+0CcqDbgmY+OYn+5dXJ2amww/nBvOqakREpcWXdjBunwwYJMvL+/En/89CRO1jTjR6/sxgOTBuPpGWmICFJLXSL5GK6wOGBUXAiigjVo7zLjQHmT1OUQgNO1LbhgMELjp8SkoeFSl+PVEiMCkRwVBLNFwG6O6XdYi9GEZ/993LpSUd6IAH8Vls0Yhf88mS27sCJSKhV4cPIQfPXULZg9KREA8P7+c7h19Td4b18FLGzAJjdiYHGAQqGwbztwWVweCmx3Z56SEslx/G5waVuUfSz9JQgC8o5UY/rq7Xh9xxmYLQLuHBOHL5+6GT+/eRj8VfL/azgiSI0XfjQOWx+filFxIWhq68LTHx7BD1/ZhWPn9VKXRz5C/v+lyIx4vJN/YcsD+1fci30sjjlb14pH/vYtfvHOAdQYOjAkIhB/e/RGvDInA4PCAqQuz2EZSRH49y+z8MzdoxGkVuFgRRPueXEH/t+/jqG5o0vq8sjLMbA4SDwpcfS8HvUtRomr8W0dXWbsPWPdmmD/invclBIBP6UCZ+vbOBX1Kjq6zPhLfjFy1xagoPgi1ColnrxtBD5fkoPvjYqRurzr4qdSYl5WMr586hbcPS4eFgH4286zuG31dnxy+DznVJHLMLA4KCZEi7T4UOuYfu7jS6qovBEdXRbEhGiQGhssdTk+IUTrj4lDrL1ChSVcZenNN6dqccfaAqz78jQ6TRZkj4jCZ0tysPT2VK/atozTafHSjyfirXmTkRwVhNpmI578x0E8vGkvZ1WRSzCwDIC9j6WYf2FLqeCy00Ecx+8+9j4WziPq5nxTOx5/uwiP/u1blNe3ITZUg5d/PBFv/tT6ge6tskdE49PF2Xjq9lRo/JTYWVKPO9cW4H8/O4X2To74J+dhYBkAjumXB/EDM4fj+N0qO9X6539naR2HiQHoMluwsaAU09dsx7ajNVApFZhv2zK5a1y8T4RpjZ8Kv7xtBPKX3IzvjYxGl1nAS7a7TH954oLU5ZGXYGAZgElDw6HxU6LG0IGSWi59SuFisxHHqzmOXwpjE3TQBfijucOEw+d8+4TIvjMNuOuvhXg+7yTaOs3ISArHv3+ZhRV3j0awxvfGXA2JDMTmR2/EKw9nYJBOi3ON7Zj39/34rzf341wje57o+jCwDIDWX2Wfm1DA00KS2Gkbxz9mUCiigjUSV+NbVEoFsob79vH+uhYjnnr/MB54dTeKL7QgPNAff/rhOPzfz6ciLT5U6vIkpVAocGd6HPKX3oyf35wCP6UCnx+/gNvXFGDDN6XoNHFVjgaGgWWAOI9FWgWcbispX53HYrYIeHtPOW7932+w9cA5AMBDkxPx1VO34IEbE6GUcKS+3ARp/LBsRhryFmVjcnIE2rvMeOHTk5j510IOHqQB8b01SyexflCewJ6yeo7pdzPrOH7OX5FSlu1/90OVTdC3d7nljsJSO3JOjxUfH8XhyiYAwOj4UDx7X7r91BT1LjU2BFv+6yb882AVnvvPCZTUtuCh1/bgvgkJWDZzFG9YSv3GFZYBSo0NRkyIBh1dFhSdbZS6HJ9y6kIzLjYbofVXIoPj+CUxODwQKdG+MaZf396F3398FPe+vAOHK5sQrPHD7+8ZjU+emMaw0k8KhQI/mDgYXz11C+bclASFAvjnwSrctno73tx9FmaO+Kd+YGAZIIVCYd+OYB+Le4mng25KieTKloRyvHzqrSAI+Mj2ofr33eWwCMD3xw/CV0/djMemJcPPA0bqy40u0B9/mJWOj34xDWMTdGjuMOF3Hx/DvS/vwCHbyhVRX/hf3HXISWUfixTYvyIP3tzHUlLbjIde24PFWw6hrsWIlOggvDN/Cv760ATEhHIL43qNTwzDRwun4Q/3jkGI1g9Hqwy4b/1OLP/nEejbOOKfejegwLJ+/XokJydDq9UiIyMDhYWFfV776KOPQqFQ9HiMGTOm23Vr167FyJEjERAQgMTERCxZsgQdHR0DKc9txOO0x84bUMcx/W7R0WXGvjMNANi/IrWbUiLhr1KgoqEN5fWtUpfjFG2dJrzw6UncubYQe8oaoPFT4td3jMS2Rdk8Pu9kKqUCc6YOxVdP3YIfTEiAIADv7K3Arau/wQdF5zjjinpwuOl2y5YtWLx4MdavX49p06bh1VdfxYwZM3D8+HEMGTKkx/Xr1q3DH//4R/uvTSYTxo8fj/vvv9/+3DvvvIOnn34amzdvRmZmJoqLi/Hoo48CAP7yl78M4G25R1SwBmMGheLYeQN2ltTh3hsSpC7J6317tgFGkwVxoVoMj+E4fikFafwwcUg49p5pwN93lSNrRKTUJV2XupZOrPviNKqa2gEAt42Kwf98fwwSIwIlrsy7RYdosGb2DXjgxkQ889FRnK5twa/+7zDe/7YSz96XjtTYEKlLJJlQCA7G2ClTpmDixInYsGGD/bm0tDTMmjULq1atuubXf/TRR/jBD36AM2fOICkpCQDwxBNP4MSJE/jyyy/t1z311FPYt2/fVVdvLmcwGKDT6aDX6xEa6r45CH/cdhKvbC/FDycOxuoHxrvt+/qqZ/99HK/vOIP7Mwbjz/fzf2+pvfx1Cf782Smpy3CqhLAA/M/3x+D20bFSl+JzOk0WbN55Buu+OI32LjOC1Cp8+ItpGBnH0OLN+vv57dAKS2dnJ4qKivD00093ez43Nxe7du3q12ts2rQJ06dPt4cVAMjKysLbb7+Nffv2YfLkySgrK0NeXh4eeeQRR8qTRM6IKLyyvRSFpy9CEASfGMMtFUEQsO1oDQDgVg+/4623uH/SYOw904Cmtk6pS7luCgA5qdF4/JZhCFRz4oMU1H5KLLh5GO4ZPwiL/nEQ+8sbMf/Nb/HJwiyEB6mlLo8k5tB/lXV1dTCbzYiN7f4vj9jYWNTU1Fzz66urq7Ft2za8++673Z5/8MEHcfHiRWRlZUEQBJhMJjz++OM9gtHljEYjjMZLfSMGg8GRt+I0GUPDofVXorbZiOILLfyXgAsdqdKjqqkdAf4q3DKSgUUOYkK0ePOnk6Uug7xMQlgAXps7Cd9/eQcqG9rxi3cO4M15k+HPk1k+bUA//StXEfq7svDGG28gLCwMs2bN6vb8N998g+eeew7r16/HgQMH8OGHH+Lf//43/vCHP/T5WqtWrYJOp7M/EhMTB/JWrpvGT4WbbGP6eVrItfKOXFpdCVDzODORNwsPUuP1uTciSK3C7rJ6PPvv41KXRBJzKLBERUVBpVL1WE2pra3tsepyJUEQsHnzZsyZMwdqdfelvWeeeQZz5szB/PnzMXbsWNx33314/vnnsWrVKlgsvd93YtmyZdDr9fZHZWWlI2/FqcT7qnAei+tYt4OqAQAzxsZJXA0RucPIuBD8ZfYNAIC/7y7Hu3srpC2IJOVQYFGr1cjIyEB+fn635/Pz85GZmXnVr92+fTtKSkowb968Hr/X1tYGpbJ7KSqVCoIg9Hm0TaPRIDQ0tNtDKjmp1nkge8vq0dFllqwOb3a82oDy+jZo/JT4HreDiHxG7pg4/Co3FQDwu4+PYm+Zd09Wpr45vCW0dOlSvP7669i8eTNOnDiBJUuWoKKiAgsWLABgXfmYO3duj6/btGkTpkyZgvT09B6/d88992DDhg147733cObMGeTn5+OZZ57B97//fahU8l/6HxETjNhQDYwmC/ZzTL9LbLNtB90yMhpBGjZEEvmShd8bjrvHxcNkEfD4OwdwrrFN6pJIAg7/zT979mzU19dj5cqVqK6uRnp6OvLy8uynfqqrq1FR0X3ZTq/XY+vWrVi3bl2vr7lixQooFAqsWLECVVVViI6Oxj333IPnnntuAG/J/cQx/R8UnUPh6Yv2G8ORcwiCgLwj1u2gmWPjJa6GiNxNoVDgzz8ajzN1rTh23oD5f9+PrY9n8h8vPsbhOSxyJdUcFtHHh6qw6L1DSIsPxbZF2W7//t7sVE0z7lhbALVKiaJnpiNE6/13Biains43teP7L+1AXUsnZqTH4eUfT4RSyVESnq6/n988I+YkYuPtiWoDapvlfUsBTyOuruSkRjGsEPmwQWEBeHVOBvxVCmw7WoO/fnVa6pLIjRhYnCQyWIP0BGsy3FnC00LOZD8dlM7tICJfl5EUgedmjQUArP3iNLbZ/kFD3o+BxYnEuwcXFjOwOEtJbQuKL7TAX6XA9DSOSici4IEbE/HTackAgKXvH8bx89IMDiX3YmBxouwRl+axeElrkOQ+ta2uTBseBV0gt4OIyOq3M0che0QU2rvM+Nmb+1HXYrz2F5FHY2BxooykcAT4q1DXYsTJmmapy/EK4nTbmdwOIqLL+KmUeOmhiRgaGYiqpnb84u0D6DT1PmiUvAMDixNZx/RHAOCYfmc4W9eK49UGqJQK3jmXiHrQBfrj9UcmIUTjh31nG/D7T45ydduLMbA4mb2PhWP6r5t4Z+bMYZG8UysR9Wp4TAj++tAEKBTAP/ZV4q095VKXRC7CwOJkOanWPpa9Zxo4pv868XQQEfXH90bF4Ok7RwEA/t+/jmMXT2p6JQYWJxsWHYx4nRadJgv2nWmQuhyPVdnQhu/O6aFUALljuB1ERFf3XzkpuG9CAswWAb949wDK61ulLomcjIHFyaxj+q2rLOxjGbhPbdtBU5IjERWskbgaIpI7hUKBVT8Yi/GJYWhq68L8v+9Hc0eX1GWREzGwuAD7WK5f3lHx3kFxEldCRJ5C66/CxjkZiAnR4HRtC5ZsOQSLhU243oKBxQWmDY+CQgGcrGlGrYFj+h11vqkdByuaoFAAd4xhYCGi/osN1eLVORlQ+ynxxYlarM4/JXVJ5CQMLC4QEaTG2AQdAK6yDIS4HXRjUgRiQrUSV0NEnmbCkHD88QfW8f0vf12Kfx0+L3FF5AwMLC7CPpaBs58O4nYQEQ3QDyYOxs9zUgAAv/7gMI6c00tcEV0vBhYXEftYdpTUcQ/VARcMHdhf3ggAuDOdgYWIBu6/7xyFW0ZGo6PLgv96az9qm7lF78kYWFxk4pBwBKpVqGvpxIka3pirvz47VgNBACYOCUO8LkDqcojIg6mUCvz1oQlIiQ5Ctb4DC94qgtHE+VieioHFRdR+SkxNiQTAPhZH5B0RTwdxWBwRXb9QrT9enzsJoVo/HKhowvJ/cny/p2JgcSH2sTjmYrPRPmyP20FE5Cwp0cF46ccToVQAHxSdw+adZ6UuiQaAgcWFslOtfSzfnmlEeyeXIa/l8+M1sAjA+ME6DA4PlLocIvIiOanRWH7XaADAc/85joJi/kPS0zCwuFBKVBASwgLQabZg75l6qcuRvW1HrMeZZ3A7iIhc4KfThuL+jMGwCMAT7x5A2cUWqUsiBzCwuFD3Mf3sY7mahtZO7C6zhroZ3A4iIhdQKBR49r50TBwSBkOHCfPf3A8Dx/d7DAYWF7s0pp/Lj1eTf7wGZouAMYNCkRQZJHU5ROSlNH4qvDInA/E6LcoutuLJfxyEmaMnPAIDi4tNGx4JhQIovtCCGj1nAPQlz7YdxNNBRORqMSFavDZ3ErT+Snxz6iL+9OlJqUuifmBgcbGwQDXGDQ4DwFWWvujburCzxLplxu0gInKH9AQd/vyj8QCAVwvK8OGBcxJXRNfCwOIGOexjuar8ExdgsggYFReClOhgqcshIh9xz/hBeOJ7wwEAT394BAcrGiWuiK6GgcUNOKb/6rbZhsXNSOd2EBG519LbUzE9LRadJgt+/lYRt+5ljIHFDSYMCUOQWoWG1k4cr+aY/ssZOrrsK08zebNDInIzpVKBv8wej9TYYNQ2G/Hzt/ajo4tzs+SIgcUN/FVKTB1m3RYqYB9LN1+dqEWn2YLhMcEYERsidTlE5INCtP54be4khAX64/A5PZ7e+h3H98sQA4ub5KTa+liK2cdyOfu9g9hsS0QSSooMwvofT4RKqcBHh87j1YIyqUuiKzCwuInYx7K/vAFtnSaJq5GHFqMJ39jGY9/J/hUikljm8Cj8/h7r+P4XPj2Jr05ekLgiuhwDi5sMjQzE4PAAdJkF7C1rkLocWfj6ZC06TRYMjQxEWjy3g4hIenNuSsJDk4dAEIAn/3EIJbXNUpdENgwsbmId029dZWEfi9W2o7bTQWPjoVAoJK6GiMj6d/X/+/4YTB4agRajCfP/vh/6No7vlwMGFjfiPJZL2jpN+PqkNbjN5HYQEcmI2k+JDQ9PREJYAM7Wt+GJfxyAyWyRuiyfx8DiRpnDoqBUACW1LTjf1C51OZLafuoi2rvMGBwegPSEUKnLISLqJjJYg9fmTkKAvwqFp+vwfB7H90uNgcWNdIH+GJ8YBgDY4eOrLHlHL907iNtBRCRHoweFYs0D1vH9m3eewfvfVkpckW9jYHEz9rEAHV1mfHXC2n3PewcRkZzNGBuPxdNHAACWf3QE+8/y0IRUGFjcTOxj2VFS57O3NC8ovojWTjMG6bS4wbbiREQkV0/eOgIz0uPQZRaw4O0iVPn4lr5UGFjcbHxiGEI0fmhq68Kx83qpy5HENtt20J3p3A4iIvlTKhVY/cB4pMWHoq6lE//15n60d3J8v7sxsLiZdUx/JADfPC1kNJnxxXHrdhDvHUREniJQ7YfX5mYgMkiNY+cN+NUHhzm+380YWCSQnWrrYyn2vT6WnSV1aDaaEBOiwcQh4VKXQ0TUb4PDA7Hh4Qz4KRX4z3fVePnrEqlL8ikMLBIQ+1gOVDSixehbY/rzjli3g2akx0Gp5HYQEXmWyckRWHlvOgDgfz8vxufHaiSuyHcwsEggKTIIQyICbWP666Uux206TRb7f9wzxnJYHBF5ph9PGYK5U5MAAEu2HMLJGoPEFfkGBhaJZPvg1NvdZfUwdJgQFazGjUMjpC6HiGjAnrl7NKamRKK104yfvbkfDa2dUpfk9RhYJOKL81i2HbHeO+iOMXFQcTuIiDyYv0qJ9T+ZiMSIAFQ2tOMX7xShi+P7XYqBRSJTh0VCpVSg7GIrzjW2SV2Oy5nMFnx27NJ0WyIiTxcepMbrc29EkFqFPWUNWPmv41KX5NUYWCSiC/C3D03zhTH9e880oLGtC+GB/piSzO0gIvIOI+NCsPbBCVAogLf2lOPtPeVSl+S1GFgk5Et9LHmXbQf5qfjHjoi8x+2jY/Gr3JEAgP/55Bj2+NBhCnfiJ4eExD4Wbx/Tb7YI+OyY7d5B3A4iIi/0i1uG4e5x8TBZBDz+dhEqG7x/q9/dGFgkNH6wDiFaP+jbu3CkynvH9O8/24C6FiN0Af7ItE35JSLyJgqFAn/+0XikJ4Sisa0LP3tzP1p9bM6WqzGwSMhPpbR/gBd68dRb8d5Bt4+OhT+3g4jISwWoVdg4ZxKigjU4WdOMpe8fgsWLV8/djZ8eEhO3hby1j8ViEbDtqLV/hfcOIiJvNygsAK/OyYBapcRnxy5g3ZenpS7Ja/hJXYCvy7EFFnFMf7DGu34kBysbccFgRIjGD9OGR0ldDhGRy2UkhePZ+9Lx3x98h3VfnkZsqBZjE3RSl+UUKdFBCJLoc8q7Ph090JDIQCRFBqK8vg17SusxfXSs1CU5lXjvoOmjY6HxU0lcDRGRezwwKRGnapqxaccZ/PafR6Qux2k+/EWmZDeuZWCRgewRUSivr0Dh6YteFVgEQbBPt52Rzu0gIvIty2aMgtFkxlcnaqUuxWnUEvYhMrDIQPaIaLy9p8Lr+lgOn9PjvL4DQWoVclKjpS6HiMit/FRKPDtrLDBL6kq8A5tuZcA+pr+u1avO7ourK7emxULrz+0gIiIaOAYWGQjV+mOCOKa/xDtWWQRBQJ54OojbQUREdJ0YWGTi0vFm75jHcuy8AZUN7QjwV+GWkTFSl0NERB5uQIFl/fr1SE5OhlarRUZGBgoLC/u89tFHH4VCoejxGDNmjP2aW265pddr7rrrroGU55GyU61Hfnec9o4x/eK9g743KhoBam4HERHR9XE4sGzZsgWLFy/G8uXLcfDgQWRnZ2PGjBmoqKjo9fp169ahurra/qisrERERATuv/9++zUffvhht2uOHj0KlUrV7RpvNy5Bh1CtHwwdJnx3rknqcq6LIAj2wDIjnfcOIiKi6+dwYFmzZg3mzZuH+fPnIy0tDWvXrkViYiI2bNjQ6/U6nQ5xcXH2x/79+9HY2IjHHnvMfk1ERES3a/Lz8xEYGOhTgcVPpbQPVvP000Ina5pxtr4NGj8lvjeK20FERHT9HAosnZ2dKCoqQm5ubrfnc3NzsWvXrn69xqZNmzB9+nQkJSVd9ZoHH3wQQUFBfV5jNBphMBi6PTydt/SxiKeDbk6N9rrJvUREJA2HAktdXR3MZjNiY7sPN4uNjUVNTc01v766uhrbtm3D/Pnz+7xm3759OHr06FWvAYBVq1ZBp9PZH4mJif17EzKWPcK6wnKgognNHV0SVzNwebabHc4cy+0gIiJyjgE13SoUim6/FgShx3O9eeONNxAWFoZZs2b1ec2mTZuQnp6OyZMnX/W1li1bBr1eb39UVlb2q3Y5S4wIRHJUEMwWAbtL66UuZ0BOX2hGSW0L1Colbk3jdhARETmHQ4ElKioKKpWqx2pKbW1tj1WXKwmCgM2bN2POnDlQq9W9XtPW1ob33nvvmqsrAKDRaBAaGtrt4Q3EVRZP7WMR7x2UPSIKoVp/iashIiJv4VBgUavVyMjIQH5+frfn8/PzkZmZedWv3b59O0pKSjBv3rw+r3n//fdhNBrx8MMPO1KWV/H0PpZttmFxM7gdRERETuRwR+TSpUsxZ84cTJo0CVOnTsXGjRtRUVGBBQsWALBu1VRVVeHNN9/s9nWbNm3ClClTkJ6e3udrb9q0CbNmzUJkZKSjZXmNm1Ii4KdU4Gx9Gyrq2zAkMlDqkvqt9GILTtY0w0+pwO1p3nMTRyIikp7DgWX27Nmor6/HypUrUV1djfT0dOTl5dlP/VRXV/eYyaLX67F161asW7euz9ctLi7Gjh078PnnnztaklcJ0fpj4pBw7DvbgMKSi/hJZN+nqeTmU1uz7bThUdAFcjuIiIicRyEIguePVQVgMBig0+mg1+s9vp/lxS9PY3V+Me4cE4dX5mRIXU6/3fXXQhw7b8ALPxyL2TcOkbocIiLyAP39/Oa9hGQoO9Xax7KztA4ms0XiavqnvL4Vx84boFIqcPto3uyQiIici4FFhsYm6KAL8EdzhwmHz+mlLqdfttm2g6amRCIiqPdTYERERAPFwCJDKqUCWfYx/Z5xWkicbjtjLFdXiIjI+RhYZMqT5rGca2zD4XN6KBVALreDiIjIBRhYZCrLFlgOVTZB3y7vMf3i6aDJyRGIDtFIXA0REXkjBhaZGhweiJRozxjTn2fbDuK9g4iIyFUYWGQsxwOm3lbr23GgogkKBXDHGG4HERGRazCwyJgn9LGI20GTksIRG6qVuBoiIvJWDCwydlNKJPxVClQ0tKG8vlXqcnq1zXazwxnp3A4iIiLXYWCRsSCNHyYOCQcAFMhwlaXW0IFvyxsAAHemczuIiIhch4FF5nJsU28Li+XXx/LZsRoIAjBhSBgGhQVIXQ4REXkxBhaZE/tYdpfWo0tmY/rz7NtBXF0hIiLXYmCRuTGDdAgP9Eez0YTDlU1Sl2NX12LE3jPW49bsXyEiIldjYJE5lVKBabYx/XLqY/n82AVYBOt9jxIjAqUuh4iIvBwDiweQ4zyWbUd57yAiInIfBhYPII7pP1zZBH2b9GP6G1s7sauU20FEROQ+DCweYFBYAIbHBMMiALtKpd8Wyj9+AWaLgLT4UCRHBUldDhER+QAGFg8hnhaSQx9Lnm07aCZPBxERkZswsHgIsY+loPgiBEGQrA59Wxd2llhD0wze7JCIiNyEgcVDTEmJgL9Kgaqmdpytb5Osji9OXECXWUBqbDCGxwRLVgcREfkWBhYPEaj2w6SkCADSnhaynw5isy0REbkRA4sHyU619bEUS9PH0tzRZe+hmcntICIiciMGFg8i9rHsLq2TZEz/Vydr0WmyICU6CKmx3A4iIiL3YWDxIKPjQxERpEZrpxkHK5rc/v232e4dNDM9HgqFwu3fn4iIfBcDiwdRKhXIso3pd3cfS6vRhK9P1QLgdFsiInI/BhYPI9U8lm9OXYTRZEFSZCBGx4e69XsTERExsHiYbFsfy3fnmtDU1um275t32ekgbgcREZG7MbB4mDidFqmxwRAEYGdJvVu+Z3unGV+ftG4HzeR2EBERSYCBxQNlu/nuzduLL6Kt04yEsACMTdC55XsSERFdjoHFA4l9LIWn69wypl8cFjdzbBy3g4iISBIMLB5oSnIk1ColqpraUVbX6tLv1dFlxpcnxNNBHBZHRETSYGDxQAFqFW5MDgcAFBa7dltox+k6tBhNiNdpccPgMJd+LyIior4wsHioS30srj3eLJ4OujM9Dkolt4OIiEgaDCweSuxj2V1Wj06Ta8b0d5osyD9+AQDvHURERNJiYPFQaXGhiAxSo63TjAMVjS75HjtL69DcYUJMiAYZQ8Jd8j2IiIj6g4HFQymVCmSNcO2Y/m1HuB1ERETywMDiwVzZx9JltuBz23bQjHRuBxERkbQYWDyY2MdypEqPhlbnjunfU1aPprYuRAapMTk5wqmvTURE5CgGFg8WG6rFyNgQ25h+566y5B2pAQDckR4HFbeDiIhIYgwsHi7bBX0sJrMFnx+zBpaZ3A4iIiIZYGDxcNmpl/pYnDWmf9/ZBtS3diI80B9TUrgdRERE0mNg8XCTh0ZA7adEtb4DpRdbnPKa22zbQbmj4+Cv4h8RIiKSHj+NPFyAWoXJQ62rIAXF19/HYrYI+NS2HTRjbNx1vx4REZEzMLB4AWf2sRSVN+JisxGhWj9kDou67tcjIiJyBgYWLyDOY9lT1gCjyXxdr5VnGxZ3++g4qP34x4OIiOSBn0heYFRcCKKCNWjvMqOofOBj+i0WAZ8etZ0O4nYQERHJCAOLF1AqFZdtCw28j+VgZRNqDB0I1vjZx/4TERHJAQOLl3BGH4t476DpaTHQ+KmcUhcREZEzMLB4iazh1sBytMqA+hajw18vCAK2HRVPB3FYHBERyQsDi5eICdViVFwIAGDHAMb0f3dOj6qmdgSqVbjZNoyOiIhILhhYvEhO6sDv3px31LoddOuoGGj9uR1ERETywsDiRS7vY3FkTL8gCPbptjO5HURERDLEwOJFbhwaAY2fEhcMRpyu7f+Y/mPnDahoaIPWX4lbRnI7iIiI5IeBxYto/VWYnCyO6e//aaFttu2g742MQaDazyW1ERERXQ8GFi+TM8KxPhZBEJB3hKeDiIhI3hhYvEx2qrWPZe+ZenR0XXtM/6kLzThT1wq1nxK3jopxdXlEREQDwsDiZUbGhiA6RIOOLku/xvSLqys3p0YjWMPtICIikqcBBZb169cjOTkZWq0WGRkZKCws7PPaRx99FAqFosdjzJgx3a5ramrCwoULER8fD61Wi7S0NOTl5Q2kPJ+mUFwa01/Qj6m34nRb3juIiIjkzOHAsmXLFixevBjLly/HwYMHkZ2djRkzZqCioqLX69etW4fq6mr7o7KyEhEREbj//vvt13R2duL222/H2bNn8cEHH+DUqVN47bXXkJCQMPB35sPsfSzFV+9jOX2hGadrW+CvUuC2tFh3lEZERDQgDu8BrFmzBvPmzcP8+fMBAGvXrsVnn32GDRs2YNWqVT2u1+l00Ol09l9/9NFHaGxsxGOPPWZ/bvPmzWhoaMCuXbvg7+8PAEhKSnL4zZDVNNuY/uPVBlxsNiI6RNPrdeIo/uwR0QjV+rutPiIiIkc5tMLS2dmJoqIi5Obmdns+NzcXu3bt6tdrbNq0CdOnT+8WSD755BNMnToVCxcuRGxsLNLT0/H888/DbO67adRoNMJgMHR7kFV0iAaj40MBALtK+15lybNtB81I53YQERHJm0OBpa6uDmazGbGx3bcPYmNjUVNTc82vr66uxrZt2+yrM6KysjJ88MEHMJvNyMvLw4oVK7B69Wo899xzfb7WqlWr7Ks3Op0OiYmJjrwVryeeFiroY1uo7GILTtY0w0+pwO2juR1ERETyNqCmW4VC0e3XgiD0eK43b7zxBsLCwjBr1qxuz1ssFsTExGDjxo3IyMjAgw8+iOXLl2PDhg19vtayZcug1+vtj8rKyoG8Fa91aR5L72P6xe2gqcMiERaodmttREREjnKohyUqKgoqlarHakptbW2PVZcrCYKAzZs3Y86cOVCru39AxsfHw9/fHyrVpZvupaWloaamBp2dnT2uBwCNRgONpvfeDAIyksKh9VeittmI4gstGGm7k7NInG7LewcREZEncGiFRa1WIyMjA/n5+d2ez8/PR2Zm5lW/dvv27SgpKcG8efN6/N60adNQUlICi8Vif664uBjx8fG9hhW6Nq2/ClOSIwFYV1kuV9nQhqNVBigVQC63g4iIyAM4vCW0dOlSvP7669i8eTNOnDiBJUuWoKKiAgsWLABg3aqZO3duj6/btGkTpkyZgvT09B6/9/jjj6O+vh6LFi1CcXEx/vOf/+D555/HwoULB/CWSHRpHkv3PhZxdeWmlEhEBnOVioiI5M/hY82zZ89GfX09Vq5cierqaqSnpyMvL89+6qe6urrHTBa9Xo+tW7di3bp1vb5mYmIiPv/8cyxZsgTjxo1DQkICFi1ahN/85jcDeEskykmNBv5zAnvLrGP6tf7WLTfeO4iIiDyNQuitI9MDGQwG6HQ66PV6hIaGSl2OLAiCgJtWfYkLBiPenjcFWSOiUNXUjml//AoKBbD3t7chJkQrdZlEROTD+vv5zXsJeTHrmP5Lp4UA4FPb6aAbh0YwrBARkcdgYPFyV/ax2O8dxGFxRETkQRhYvFyWbUz/iWoDjlbpsd92B+c709m/QkREnoOBxctFBmuQnmDdE3zm46MArDNa4nTcDiIiIs/BwOIDxD6WgxVNAHjvICIi8jwMLD5A7GMR8TgzERF5GgYWH5CRFI4A2wyW8YlhSAgLkLgiIiIixzCw+ACNnwrTbM23d3N1hYiIPJDDk27JM/1h1hh8b1Q0HpiUKHUpREREDmNg8RHxugD8ZEqS1GUQERENCLeEiIiISPYYWIiIiEj2GFiIiIhI9hhYiIiISPYYWIiIiEj2GFiIiIhI9hhYiIiISPYYWIiIiEj2GFiIiIhI9hhYiIiISPYYWIiIiEj2GFiIiIhI9hhYiIiISPa85m7NgiAAAAwGg8SVEBERUX+Jn9vi53hfvCawNDc3AwASExMlroSIiIgc1dzcDJ1O1+fvK4RrRRoPYbFYcP78eYSEhEChUDjtdQ0GAxITE1FZWYnQ0FCnvS4NDH8e8sOfibzw5yEv/HlcmyAIaG5uxqBBg6BU9t2p4jUrLEqlEoMHD3bZ64eGhvIPm4zw5yE//JnIC38e8sKfx9VdbWVFxKZbIiIikj0GFiIiIpI9BpZr0Gg0+P3vfw+NRiN1KQT+POSIPxN54c9DXvjzcB6vabolIiIi78UVFiIiIpI9BhYiIiKSPQYWIiIikj0GFiIiIpI9BpZrWL9+PZKTk6HVapGRkYHCwkKpS/JJq1atwo033oiQkBDExMRg1qxZOHXqlNRlkc2qVaugUCiwePFiqUvxWVVVVXj44YcRGRmJwMBA3HDDDSgqKpK6LJ9lMpmwYsUKJCcnIyAgACkpKVi5ciUsFovUpXksBpar2LJlCxYvXozly5fj4MGDyM7OxowZM1BRUSF1aT5n+/btWLhwIfbs2YP8/HyYTCbk5uaitbVV6tJ83rfffouNGzdi3LhxUpfisxobGzFt2jT4+/tj27ZtOH78OFavXo2wsDCpS/NZL7zwAl555RW89NJLOHHiBP70pz/hz3/+M1588UWpS/NYPNZ8FVOmTMHEiROxYcMG+3NpaWmYNWsWVq1aJWFldPHiRcTExGD79u3IycmRuhyf1dLSgokTJ2L9+vV49tlnccMNN2Dt2rVSl+Vznn76aezcuZMrwDJy9913IzY2Fps2bbI/98Mf/hCBgYF46623JKzMc3GFpQ+dnZ0oKipCbm5ut+dzc3Oxa9cuiaoikV6vBwBERERIXIlvW7hwIe666y5Mnz5d6lJ82ieffIJJkybh/vvvR0xMDCZMmIDXXntN6rJ8WlZWFr788ksUFxcDAA4fPowdO3Zg5syZElfmubzm5ofOVldXB7PZjNjY2G7Px8bGoqamRqKqCLDe2XPp0qXIyspCenq61OX4rPfeew8HDhzAt99+K3UpPq+srAwbNmzA0qVL8dvf/hb79u3Dk08+CY1Gg7lz50pdnk/6zW9+A71ej1GjRkGlUsFsNuO5557DQw89JHVpHouB5RoUCkW3XwuC0OM5cq8nnngC3333HXbs2CF1KT6rsrISixYtwueffw6tVit1OT7PYrFg0qRJeP755wEAEyZMwLFjx7BhwwYGFols2bIFb7/9Nt59912MGTMGhw4dwuLFizFo0CA88sgjUpfnkRhY+hAVFQWVStVjNaW2trbHqgu5zy9/+Ut88sknKCgowODBg6Uux2cVFRWhtrYWGRkZ9ufMZjMKCgrw0ksvwWg0QqVSSVihb4mPj8fo0aO7PZeWloatW7dKVBH9+te/xtNPP40HH3wQADB27FiUl5dj1apVDCwDxB6WPqjVamRkZCA/P7/b8/n5+cjMzJSoKt8lCAKeeOIJfPjhh/jqq6+QnJwsdUk+7bbbbsORI0dw6NAh+2PSpEn4yU9+gkOHDjGsuNm0adN6HPMvLi5GUlKSRBVRW1sblMruH7EqlYrHmq8DV1iuYunSpZgzZw4mTZqEqVOnYuPGjaioqMCCBQukLs3nLFy4EO+++y4+/vhjhISE2Fe+dDodAgICJK7O94SEhPToHwoKCkJkZCT7iiSwZMkSZGZm4vnnn8cDDzyAffv2YePGjdi4caPUpfmse+65B8899xyGDBmCMWPG4ODBg1izZg1++tOfSl2a5xLoql5++WUhKSlJUKvVwsSJE4Xt27dLXZJPAtDr429/+5vUpZHNzTffLCxatEjqMnzWv/71LyE9PV3QaDTCqFGjhI0bN0pdkk8zGAzCokWLhCFDhgharVZISUkRli9fLhiNRqlL81icw0JERESyxx4WIiIikj0GFiIiIpI9BhYiIiKSPQYWIiIikj0GFiIiIpI9BhYiIiKSPQYWIiIikj0GFiIiIpI9BhYiIiKSPQYWIiIikj0GFiIiIpI9BhYiIiKSvf8PYfYdekDDml4AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 结果可视化 \n",
    "import matplotlib.pyplot as plt \n",
    "plt.plot(depth_range, score) \n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4276665b-83c9-412f-ace3-825a17ca8590",
   "metadata": {},
   "outputs": [],
   "source": [
    "xg.predict()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
